# ferreus_orbit Plugins for Lenovo "ThinkSystem SR665"

fo_load_storcli

fo_get_sorted_name(){
  local id=$(fo_get_id)
  if [ "$USE_FO_NAME" -lt 1 ]; then
    echo sd$(fo_get_dev_letter ${id})
  else
    echo "Disk${id}"
  fi
}

fo_get_did(){
  local id=$(echo "$DEVPATH" | cut -d/ -f7| cut -d: -f3)
  local dg=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[\"VD LIST\"][]|select(.[\"DG/VD\"]|endswith(\"/${id}\")).\"DG/VD\""|cut -d'/' -f1)
  cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[\"TOPOLOGY\"][]|select(.DG==${dg})|select(.Type==\"DRIVE\").DID"
}

fo_get_id(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  if [ "${host}" == "host0" ];then
    local scsi=$(echo "$DEVPATH" | cut -d/ -f8)
    sg=$(ls "/sys/class/scsi_disk/${scsi}/device/scsi_generic")
    sc=$(echo ${sg}|awk -F 'sg' '{print $2}')
    let "id = sc - 1"
  else
    local scsi=$(echo "$DEVPATH" | cut -d/ -f9)
    sg=$(ls "/sys/class/scsi_disk/${scsi}/device/scsi_generic")
    sc=$(echo ${sg}|awk -F 'sg' '{print $2}')
    let "id = sc - 1"
  fi
  echo $id
}

FO_DISPOSITION="""
HDD disposition (Front Panel)
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk0}|{Disk3}|{Disk6}|{Disk9}|
|{SN_Disk0}|{SN_Disk3}|{SN_Disk6}|{SN_Disk9}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk1}|{Disk4}|{Disk7}|{Disk10}|
|{SN_Disk1}|{SN_Disk4}|{SN_Disk7}|{SN_Disk10}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|
|{SN_Disk2}|{SN_Disk5}|{SN_Disk8}|{SN_Disk11}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk12}|{Disk13}|{Disk14}|{Disk15}|
|{SN_Disk12}|{SN_Disk13}|{SN_Disk14}|{SN_Disk15}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""
 
